/*
 * Copyright (c) 2018-2999 九五云信息科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 */

package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.ShopWallet;
import com.yami.shop.common.util.PageParam;
import org.springframework.http.ResponseEntity;

import java.math.BigDecimal;

/**
 * 商家钱包信息
 *
 * @author Dwl
 * @date 2019-09-19 14:02:57
 */
public interface ShopWalletService extends IService<ShopWallet> {

    ShopWallet getShopWalletByShopId(Long shopId);

    IPage<ShopWallet> pageShopWallet(PageParam<ShopWallet> page, ShopWallet shopWallet);

    /**
     * 获取店铺钱包
     * 
     * @param shopId 店铺ID
     * @return 店铺钱包
     */
    ResponseEntity<ShopWallet> getShopWallet(Long shopId);
    
    /**
     * 创建店铺钱包
     * 
     * @param shopId 店铺ID
     * @return 操作结果
     */
    ResponseEntity<Void> createShopWallet(Long shopId);

    
    /**
     * 增加保证金
     * 
     * @param shopId 店铺ID
     * @param amount 金额
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> increaseDepositAmount(Long shopId, BigDecimal amount, String remark);
    
    /**
     * 减少保证金
     * 
     * @param shopId 店铺ID
     * @param amount 金额
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> decreaseDepositAmount(Long shopId, BigDecimal amount, String remark);
    
    /**
     * 增加运营金额
     * 
     * @param shopId 店铺ID
     * @param amount 金额
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> increaseOperationAmount(Long shopId, BigDecimal amount, String remark);
    
    /**
     * 减少运营金额
     * 
     * @param shopId 店铺ID
     * @param amount 金额
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> decreaseOperationAmount(Long shopId, BigDecimal amount, String remark);
    
    /**
     * 增加刷新点
     * 
     * @param shopId 店铺ID
     * @param points 点数
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> increaseRefreshPoints(Long shopId, Integer points, String remark);
    
    /**
     * 减少刷新点
     * 
     * @param shopId 店铺ID
     * @param points 点数
     * @param remark 备注
     * @return 操作结果
     */
    ResponseEntity<Void> decreaseRefreshPoints(Long shopId, Integer points, String remark);
}
